Database Operations and Data Manipulation Using Search-On-The-Fly

ABSTRACT

A method for searching for data among a plurality of disparate databases includes a processor: displaying an indication of contents of each of the plurality of disparate databases, comprising displaying a data field descriptor for one or more database fields of each of the plurality of disparate databases; receiving a search selection directed to one or more of the one or more database fields; returning a first search result comprising database entries matching the search selection; saving the first search result as a first temporary database; receiving a second search request directed to the first temporary database; returning a second search result comprising entries in the temporary database matching the further search request; and saving the second search result as a second temporary database.

RELATED APPLICATIONS

This patent application is a continuation of patent application Ser. No.14/214,700 filed Mar. 15, 2014 entitled Database Operations and DataManipulation Using Search-On-The-Fly, which claims the benefit ofprovisional patent application Ser. No. 61/852,024 filed Mar. 15, 2013entitled Database Operations and Data Manipulation UsingSearch-On-The-Fly, which is a continuation-in-part of U.S. patentapplication Ser. No. 11/979,255 entitled Search-On-The-Fly SearchEngine, filed Oct. 31, 2007, which is a continuation of U.S. patentapplication Ser. No. 10/871,050, filed Jun. 21, 2004 entitledSearch-On-The-Fly/Sort-On-The-Fly Search Engine, now U.S. Pat. No.7,574,432, which is a division of U.S. patent application Ser. No.09/513,340, filed Feb. 25, 2000, entitledSearch-On-The-Fly/Sort-On-The-Fly Search Engine for Searching Databases,now U.S. Pat. No. 6,760,720. The disclosures of these patentapplications and patents are hereby incorporated by reference in theirentirety.

BACKGROUND

In the most general sense, a database is a collection of data. Variousarchitectures have been devised to organize data in a computerizeddatabase. Typically, a computerized database includes data stored inmass storage devices, such as tape drives, magnetic hard disk drives andoptical drives. Three main database architectures are termedhierarchical, network and relational. A hierarchical database assignsdifferent data types to different levels of the hierarchy. Links betweendata items on one level and data items on a different level are simpleand direct. However, a single data item can appear multiple times in ahierarchical database and this creates data redundancy. To eliminatedata redundancy, a network database stores data in nodes having directaccess to any other node in the database. There is no need to duplicatedata since all nodes are universally accessible. In a relationaldatabase, the basic unit of data is a relation. A relation correspondsto a table having rows, with each row called a tuple, and columns, witheach column called an attribute. From a practical standpoint, rowsrepresent records of related data and columns identify individual dataelements. The order in which the rows and columns appear in a table hasno significance. In a relational database, one can add a new column to atable without having to modify older applications that access othercolumns in the table. Relational databases thus provide flexibility toaccommodate changing needs.

All databases require a consistent structure, termed a schema, toorganize and manage the information. In a relational database, theschema is a collection of tables. Similarly, for each table, there isgenerally one schema to which it belongs. Once the schema is designed, atool, known as a database management system (DBMS), is used to build thedatabase and to operate on data within the database. The DBMS stores,retrieves and modifies data associated with the database. Lastly, to theextent possible, the DBMS protects data from corruption and unauthorizedaccess.

A human user controls the DBMS by providing a sequence of commandsselected from a data sublanguage. The syntax of data sublanguages varieswidely. The American National Standards Institute (ANSI) and theInternational Organization for Standardization (ISO) have adoptedStructured English Query Language (SQL) as a standard data sublanguagefor relational databases. SQL comprises a data definition language(DDL), a data manipulation language (DML), and a data control language(DCL). The DDL allows users to define a database, to modify itsstructure and to destroy it. The DML provides the tools to enter, modifyand extract data from the database. The DCL provides tools to protectdata from corruption and unauthorized access. Although SQL isstandardized, most implementations of the ANSI standard have subtledifferences. Nonetheless, the standardization of SQL has greatlyincreased the utility of relational databases for many applications.

Although access to relational databases is facilitated by standard datasublanguages, users still must have detailed knowledge of the schema toobtain needed information from a database since one can design manydifferent schemas to represent the storage of a given collection ofinformation. For example, in an electronic commerce system, productinformation, such as product SKU, product name, product description,price, and tax code, may be stored in a single table within a relationaldatabase. In another electronic commerce system, product SKU, productname, description, and tax code may be stored in one table while productSKU and product price are stored in a separate table. In this situation,a SQL query designed to retrieve a product price from a database of thefirst electronic commerce system is not useful for retrieving the pricefor the same product in the other electronic system's database becausethe differences in schemas require the use of different SQL queries toretrieve product price. As a consequence, developers of retailapplications accessing product information from relational databases mayhave to adapt their SQL queries to each individual schema. This, inturn, prevents their applications from being used in environments wherethere are a wide variety of databases having different schemas, such asthe World Wide Web.

A further problem with conventional searches, search engines, dataaccess and data retrieval is a tendency to return very large amounts ofdata, or to require the search parameters to be narrowed. When largeamounts of data are presented, the display may take many “pages” beforeall data is seen by the user. The time and expense involved in such adata review may be significant, inconvenient, not user friendly orefficient.

SUMMARY

Sort-on-the-Fly/Search-on-the-Fly data retrieval methods and apparatus(hereafter, search-on-the-fly) provide an intuitive means for accessingor searching databases, allowing a user to access or obtain informationabout data in the database without having to know anything about thedatabase structure. Sort-on-the-Fly/Search-on-the-Fly is an informationgathering process or analysis process about data stored in one or moredatabases. The on-the-fly methods and apparatus often use or includesorting and searching. While Sort-on-the-Fly/Search-on-the-Fly may be asearch engine or part of a search engine, it may also stand alone ormake calls to a search engine. For example, database search engines maybe used in conjunction with on-the-fly methods and apparatus.

Using Sort-on-the-Fly/Search-on-the-Fly, a user selects a desired term,and the user is delivered all instances of the desired term, even if aspecific file or table does not contain the instance. For example, if auser wants to enter a database using the name of a specific individualas a database entry point, a database manager or other software willaccess the database using the desired name, and will organize theresults so that all entries associated with that name are displayed. Thedatabase need not have a specific file (in a flat database) or a table(in a relational database) of names. The user may perform furtheron-the-fly searches or information retrieval to narrow or focus theresults, or for other reasons. For example, given results for all namesthat include the name “Smith,” the user may then decide to obtaininformation for all “Smiths” that include an association to an addressin New Jersey. Search-on-the-fly then conducts a further informationgathering using these criteria and produces a second result. Furthernarrowing or broadening of the analysis is permitted, withsearch-on-the-fly returning results based on any new criteria.

In an embodiment, search-on-the-fly uses graphical user interfaces(GUIs) and one or more icons to make the information gathering processas efficient as possible. The GUIs may incorporate one or more pull downmenus of available sorting terms. As a user selects an item from a firstpulldown menu, a subsequent pulldown menu displays choices that areavailable for sorting or searching. The process may be continued orrepeated until Sort-on-the-Fly/Search-on-the-Fly has retrieved ordisplayed a discrete data entry from the database. The pulldown menusare not pre-formatted. Instead, the pulldown menus are created“on-the-fly” as the user steps through the sort and/or search process.Thus, search-on-the-fly is inherently intuitive, and allows a user withlittle or no knowledge of the database contents, its organization, or asearch engine search routine to execute comprehensive analysis, sortingand/or searches that return generally accurate results.

A data search and manipulation method includes accessing, by aprocessor, a first data element of a first data structure, the firstdata structure represented by a first icon, the first icon displayed ina user interface; accessing, by the processor, a second data element ofa second data structure, the second data structure represented by asecond icon displayed in the user interface; executing, by theprocessor, a first data manipulation process in response to the firsticon dragged over the second icon; and executing, by the processor, asecond data manipulation process in response to the second icon draggedover the first icon.

A method for searching data in a first database represented by a firsticon and a second database represented by a second icon includesreceiving a search request for a data element in the first database;returning the data element; responding to a first manipulation of thefirst and second icons, includes detecting a first move of the firsticon over the second icon, identifying the first move as a first searchrequest, the processor executing a first search operation in response tothe first search request, and providing a first search result. Themethod further includes responding to a second manipulation of the firstand second icons, including detecting a second move of the second iconover the first icon, identifying the second move as a second searchrequest, the processor executing a second search operation in responseto the second search request, and providing a second search resultdifferent from the first search result.

A system for searching and manipulating data, the data in a firstdatabase represented by a first icon and a second database representedby a second icon, includes a processor; and a computer-readable storagemedium containing search-on-the-fly search and data manipulationinstructions. The processor executes the instructions to receive asearch request for a data element in the first database and return thedata element. The processor responds to a first manipulation of thefirst and second icons. The processor detects a first move of the firsticon over the second icon, identifies the first move as a first searchrequest, executes a first search operation in response to the firstsearch request, and provides a first search result. The processorresponds to a second manipulation of the first and second icons. Theprocessor detects a second move of the second icon over the first icon,identifies the second move as a second search request, executes a secondsearch operation in response to the second search request, and providesa second search result different from the first search result.

In an embodiment, a method for searching for data among a plurality ofdisparate databases includes a processor: displaying an indication ofcontents of each of the plurality of disparate databases, comprisingdisplaying a data field descriptor for one or more database fields ofeach of the plurality of disparate databases; receiving a searchselection directed to one or more of the one or more database fields;returning a first search result comprising database entries matching thesearch selection; saving the first search result as a first temporarydatabase; receiving a second search request directed to the firsttemporary database; returning a second search result comprising entriesin the temporary database matching the further search request; andsaving the second search result as a second temporary database.

Search-on-the-fly also searches on key words specified by the user.Search-on-the-fly can be used to exclude certain items.Search-on-the-fly incorporates other advanced features such as savingresults by attaching a cookie to a user's computer, and associatingicons with the results.

Search-on-the-fly may be used with both internal and external databases.For example, Search-on-the-fly may be used with a company internaldatabase and one or more databases accessible through the Internet.

Search-on-the-fly is user-friendly. With one interface, many differenttypes of databases or database schemas may be searched or sorted.

Finally, the search-on-the-fly technique, and other techniques discussedabove may be used in conjunction with a method of doing business,particularly a business method that uses the Internet as acommunications backbone.

DESCRIPTION OF THE DRAWINGS

The detailed description will refer to the following figures, in whichlike numerals refer to like objects, and in which:

FIG. 1 is a block diagram of a system that uses asearch-on-the-fly/sort-on-the-fly process;

FIG. 2 is another overall block diagram of the system of FIG. 1;

FIG. 3 is a detailed block diagram of the search engine used with thesystem of FIG. 2;

FIG. 4 is an example of a search-on-the-fly using the search engine ofFIG. 3;

FIGS. 5-9 are detailed block diagrams of components of the search engineof FIG. 3;

FIG. 10 is another example of a search-on-the-fly using the searchengine of FIG. 3;

FIGS. 11-15 b are additional examples of a search-on-the-fly using thesearch engine of FIG. 3;

FIGS. 16-20 are flow charts illustrating operations of the search engineof FIG. 3;

FIG. 21 illustrates a further function of the search engine of FIG. 3 inwhich results of more than one search are combined;

FIGS. 22A-26 illustrate graphical user interfaces that may be displayedin conjunction with operation of the system of FIG. 1;

FIGS. 27-31 illustrate additional features of search-on-the flysearching.

DETAILED DESCRIPTION

Ordinary search engines place constraints on any search. In particular,a partial ordering of available search criteria limits application ofthe search engine only to certain search sequences. The user is given achoice of search sequences, and the order in which individual searchsteps in the search sequence become available limits the direction ofthe search. A user who desires to take a vacation cruise may use anInternet search engine to find a desired vacation package. The searchbegins with presentation of a list of general categories, and the userclicks on “travel,” which produces a list of subcategories. The userthen clicks on “cruises” from the resulting list of subcategories, andso on in a cumulative narrowing of possibilities until the user findsthe desired destination, date, cruise line, and price. The order inwhich choices become available amounts to a predefined “search tree,”and the unspoken assumption of the search engine designer is that theneeds and thought processes of any user will naturally conform to thispredefined search tree.

To an extent, predefined constraints are helpful in that predefinedconstraints allow a search engine to logically and impersonally orderthe user's thoughts in such a way that if the user has a clear idea ofwhat object the user wants, and if the object is there to be found, thenthe user is assured of finding the object. Indeed, the user may want toknow that choosing any available category in a search sequence willproduce an exhaustive and disjunctive list of subcategories from whichanother choice can be made. Unfortunately, an unnecessarily high cost istoo often paid for this knowledge: The user is unnecessarily locked intoa limited set of choice sequences, and without sufficient priorknowledge of the object being sought, this limitation can become ahindrance. Specifically, where prescribed search constraints areincompatible with the associative relationships in the user's mind, aconflict can arise between the thought processes of the user and thefunction of the search engine.

At one time, such conflicts were written off to the unavoidabledifferences between computers and the human mind. However, some“differences” are neither unavoidable nor problematic. In the case ofsearch engine design, the solution is elegant: upon selecting a categoryor entering a keyword, the user can be given not only a list ofsubcategories, but the option to apply previously available categoriesas well. In slightly more technical terms, the open topology of thesearch tree can be arbitrarily closed by permitting search sequences toloop and converge. Previous lists can be accessed and used as points ofdivergence from which new sub-sequences branch off, and the attributescorresponding to distinct sub-sequences can later be merged.

Sort-on-the-fly/search-on-the-fly data analysis, sorting access andretrieval methods and apparatus (hereafter, search-on-the-fly searchengine) provide an intuitive means for analyzing various types ofdatabases, allowing a user to obtain information about and/or accessdata in the database without having to know anything about the databasestructure. A user selects a desired term, and a database manager reviewsthe database for all instances of the desired term, even if a specificfile or table does not contain the instance. For example, if a userwants to analyze the database using the name of a specific individual asa database entry point, the database manager will search the database orindex using the desired name, and will organize the results so that allentries associated with that name are displayed. The database need nothave a specific file (in a flat database) or a table (in a relationaldatabase) of names. The user may perform further on-the-fly searches tonarrow the search results, or for other reasons. The search engine thenconducts a further search using these criteria and produces a secondsearch result. Further narrowing or broadening of the search arepermitted, with the search engine returning results based on any newcriteria.

This on-the-fly method or process can be used to simply analyze data orgather information about data stored in a database. The actual dataitself does not need to be fetched, displayed, printed or even sorted.The user may simply wish to use this tool to “clean-up” data orunderstand how data could be sorted or for other reasons.

FIG. 1 is a block diagram of a system 10 that uses search-on-the-fly. InFIG. 1, a database 12 is accessed using a hardware/software interfacedevice 100 to provide data to a user terminal 14. Additional databases13 and 15 may also be accessed by the terminal 14 using the device 100.The databases 12, 13 and 15 may use different schemas, or may use a sameschema. As will be described later, the device 100 may include thesearch-on-the-fly search apparatus. In an alternative embodiment, thesearch-on-the-fly search engine may be co-located with the terminal 14.In yet another embodiment, the search-on-the-fly search engine may beincorporated into the structure of one or more of the databases 12, 13and 15. The device 100 may interface with any one or more of thedatabases 12, 13 and 15 using a network connection such as through theInternet, for example. Other communications mediums may also be usedbetween the terminal 14, the device 100 and any one or more of thedatabases 12, 13 and 15. These mediums may include the public switchedtelephone network (PSTN), cable television delivery networks, IntegratedServices Digital Networks (ISDN), digital subscriber lines (DSL),wireless means, including microwave and radio communications networks,satellite distribution networks, and any other medium capable ofcarrying digital data.

The system shown in FIG. 1 is but one of many possible variations. Thesearch-on-the-fly search engine could also be incorporated within asingle computer, such as a personal computer, a computer network with ahost server and one or more user stations, an intranet, and anInternet-based system, as shown in FIG. 2. Referring again to FIG. 2,the terminal 14 may be any device capable of displaying digital dataincluding handheld devices, cellular phones, geosynchronous positioningsatellite (GPS) devices, wrist-worn devices, interactive phone devices,household appliances, televisions, television set top boxes, handheldcomputers, and other computers.

FIG. 3 is a detailed block diagram of an exemplary search-on-the-flysearch engine 125. The search engine 125 includes a request analyzer 130that receives search requests 114 from the terminal 14 (not shown inFIG. 3) and sends out updated requests 115 to a query generator 150. Astatus control 140 receives a status update signal 116 and a requeststatus control signal 118 and sends out a request status response 119 tothe request analyzer 130. The status control 140 also keeps track ofsearch cycles, that is, the number of search iterations performed. Thequery generator 150 receives the updated requests 115 from the requestanalyzer 130 and sends a database access signal 151 to a database driver170. The query generator 150 receives results 153 of a search of thedatabase 12 (not shown in FIG. 3) from the database driver 170. Thequery generator 150 provides a display signal 175 to the terminal 14.The database driver 170 sends a database access signal 171 to thedatabase 12. Finally, a database qualifier 160 receives information 161from the database driver 170 and provides a list 163 of available datafields from the database 12. As will be described later, the list ofavailable data fields 163 may be displayed to a user at the terminal 14,and may be sorted and processed using the request analyzer 130 inconjunction with the database qualifier 160. The database qualifier 160also receives search information and other commands 131 from the requestanalyzer 130.

The search engine 125 may identify a database schema by simply using atrial and error process. Alternatively, the search engine 125 may useother techniques know in the art. Such techniques are described, forexample, in U.S. Pat. No. 5,522,066, “Interface for Accessing MultipleRecords Stored in Different File System Formats,” and U.S. Pat. No.5,974,407, “Method and Apparatus for Implementing a HierarchicalDatabase Management System (HDBMS) Using a Relational DatabaseManagement System (RDBMS) and the Implementing Apparatus,” thedisclosures of which is hereby incorporated by reference.

The search engine 125 provides search-on-the-fly search capabilities andmore conventional search capabilities. In either case, the search engine125 may perform a preliminary database access function to determine ifthe user has access to the database 12. The search engine 125 alsodetermines the database schema to decide if the schema is compatiblewith the user's data processing system. If the database schema is notcompatible with the user's processing system, the search engine 125 mayattempt to perform necessary translations so that the user at theterminal 14 may access and view data in the database 12. Alternatively,the search engine 125 may provide a prompt for the user indicatingincompatibility between the terminal 14 and a selected database.

The search engine 125 may conduct a search using one or more searchcycles. A search cycle includes receipt of a request 114, any necessaryformatting of the request 114, and any necessary truncation steps. Thesearch cycle ends when a result list 175 is provided to the terminal 14.The search engine 125 may retain a status of each past and currentsearch cycle so that the user can modify the search at a later time. Theuser may also use this feature of retaining a status of past and currentsearch cycles to combine results of multiple searches, using, forexample, a Boolean AND function, a Boolean OR function, or other logicfunction. The above listed functions will be described in more detaillater.

The search-on-the-fly function of the search engine 125 begins bydetermining available data fields of the database 12. The database 12may have its data organized in one or more data fields, tables, or otherstructures, and each such data field may be identified by a data fielddescriptor. In many cases, the data field descriptor includes enoughtext for the user at the terminal 14 to determine the general contentsof the data field. The list of data fields may then be presented at theterminal 14, for example, in a pull down list. An example of such a datafield result list is shown in FIG. 4, which is from a federal databaseshowing data related to managed health care organizations. This databaseis available at http://tobaccopapers.org/dnld.htm. In FIG. 4, the firstdata field listed is “PlanType,” which is shown in result list 156.Other data field descriptors show the general categories of data in thedatabase.

Using the terminal 14, the user may select one of the data fielddescriptors to be searched. For example, the user could select “city.”If a number of entries, or records, in the city data field is short, afurther result list of complete city names may be displayed. If theentries are too numerous to be displayed within a standard screen size,for example, the search engine 125 may, in an iterative fashion, attemptto reduce, or truncate, the result list until the result list may bedisplayed. In the example shown in FIG. 4, entries in the city datafield are so numerous (the database includes all U.S. cities that have amanaged health care organization) that the search engine 125 hasproduced a result list 157 that shows only a first letter of the city.Based on the available database data fields, the user may then perform afurther search-on-the-fly. In this case, the user may choose citieswhose first initial is “N.” The search engine 125 then returns a resultlist 158 of cities whose names start with the letter “N.” Because inthis instance the result list 158 is short, no further truncation isnecessary to produce a manageable list.

FIG. 5 is a more detailed block diagram of the request analyzer 130. Aprotocol analyzer 133 receives the request 114 and provides an output135 to a constraint collator 136. The protocol analyzer 133 examines thereceived request 114, determines a format of the request 114, andperforms any necessary translations to make the request formatcompatible with the database to be accessed. If the database to beaccessed by the terminal 14 is part of a same computer system as theterminal 14, then the protocol analyzer 133 may not be required toperform any translations or to reformat the request 114. If the databaseto be accessed is not part of the same computer system as the terminal14, then the protocol analyzer 133 may be required to reformat therequest 114. The reformatting may be needed, for example, when a request114 is transmitted over a network, such as the Internet, to a databasecoupled to the network.

The constraint collator 136 provides the updated request 115 (which maybe an initial request, or a subsequent request) to the query generator150. The constraint collator 136 is responsible for interpreting therequest 114. The constraint collator 136 performs this function bycomparing the request 114 against information stored in the statuscontrol 140. In particular, the constraint collator 136 sends therequest status control signal 118 to the status control 140 and receivesthe request status response 119. The constraint collator 136 thencompares the request status response 119 to constraint informationprovided with the request 114 to determine if the constraint statusshould be updated (e.g., because the request 114 includes a newconstraint). In an embodiment, the constraint collator 136 comparesconstraint information in a current request 114 to constraintinformation residing in the status control 140, and if the currentrequest 114 includes a new constraint, such as a new narrowing request(for example, when the user clicks, touches or points over a field shownin a last search cycle), then the constraint collator 136 adds theupdated information and sends the updated request 115 to the querygenerator 150. If the constraint status should be updated, theconstraint collator 136 sends the status update 118 to the statuscontrol 140. If the request 114 is a refresh request, the constraintcollator 136 sends a reset command 131 to the database qualifier 160.The updated request 115 (possibly with a new constraint) is then sent tothe query analyzer 150 for further processing.

FIG. 6 is a block diagram of the query generator 150. The overallfunctions of the query generator 150 are to scan a database, such as thedatabase 12, using the database driver 170, and to collect searchresults based on constraints supplied by the request analyzer 130. Thequery generator 150 then returns the search results 175 to the terminal14.

The query generator 150 includes a truncator 152 and a dispatcher 154.The truncator 152 receives the updated request 115, including a newconstraint, if applicable. The truncator 152 creates new queries, basedon new constraints, and applies the new requests 151 to the database 12using the database driver 170. Many different methods of truncating fordisplay or viewing may be used by truncator 152. The truncator 152 mayinclude a variable limit 155 that is set, for example, according to acapacity of the terminal 14 to display the search results 175. If dataretrieved from the database 12 exceed the limit value, the truncator 152adjusts a size (e.g., a number of entries or records) of the data untila displayable result list is achieved. One method of adjusting the sizeis by cycling (looping). Other methods may also be used to adjust thesize of the result list. For example, the terminal 14 may be limited todisplaying 20 lines of data (entries, records) from the database 12. Thetruncator 152 will cycle until the displayed result list is at most 20lines. In an embodiment, the truncation process used by the truncator152 assumes that if the user requests all values in a particular datafield from the database 12, and there are no other constraints providedwith the request 114, and if the size of the resulting result list islarger than some numeric parameter related to a display size of theterminal 14, then the constraints may be modified by the truncator 152so that the result list can accommodated (e.g., displayed on one page)by the terminal 14. For example, instead of a full name of a city, somepart of the name—the first n letters—is checked against the database 12again, and n is reduced until the result list is small enough for thecapacity of the terminal 14. If the maximum number of displayableresults is three (3), and the database 12 contains the names of sixcities “Armandia, Armonk, New Orleans, New York, Riverhead, Riverdale,”then the first attempt to “resolve” the result list will stop after aresult list display is created with the full name of the cities:Armandia, Armonk, New Orleans . . . (the limit was reached) Try againwith 7 characters: Armandia, Armonk, New Orl, New Yor, (limit reachedagain) Again with 5 characters: Armandia, Armonk, New O, New Y, (limitreached again) Again with 3 characters: Arm ( . . . ), New ( . . . ),Riv ( . . . ). These results may now be displayed on the terminal 14.The display of Arm, New, Riv can then be used to conduct a furthersearch-on-the-fly. For example, a user could then select Riv for afurther search-on-the-fly. The result list returned would then list twocities, namely Riverhead and Riverdale.

In another embodiment, a fixed format is imposed such that all queriesgenerated against a database will have preset limits corresponding tothe capacity of the terminal 14.

In yet another embodiment, the truncator 152 may adjust the field sizeby division or other means. For example, if the display limit has beenreached, the truncator 125 may reduce the field size, X by a specifiedamount. In an embodiment, X may be divided by two. Alternatively, X maybe multiplied by a number less than 1, such as ¾, for example. Adjustingthe field size allows the search engine 125 to perform more focusedsearches and provides more accurate search results.

In another embodiment, the truncator first attempts to displayinformation without truncation. If that is not appropriate, thetruncator may attempt truncation by beginning with one character (26letters and perhaps 10 digits) and incrementing to two characters andthen three, four, until a failure to display is reached.

In still another embodiment, the user may select a limit that will causethe truncator 152 to adjust the field size. For example, the user couldspecify that a maximum of ten entries should be displayed.

For certain data fields, a terminal of a hand-held device, may have avery limited display capacity. For example, a personal data assistant(POA—see FIG. 52) or a cellular phone (see FIG. 50) may be used tosearch a database, with the results displayed on a small screen.Alternatively, a user may specify a limit on the number of entries fordisplay. In the illustrated cases, the search engine 125 may return aresult list 175 of the request 114 on multiple display pages, and theuser may toggle between these multiple display pages. As an example, ifthe terminal 14 is limited to displaying a maximum of ten entries, andif the request 114 results in a return of a data field comprising the400 largest cities in the United States, the truncator 152 will producea list of 23 entries comprising 23 alphabetical characters (no citiesthat begin with Q, Y or Z—see FIG. 4). The search engine 125 may thendisplay the results on three pages. Alternatively, the truncator 152could produce a list of letter groups into which the cities would fall,such as A-D, E-G, H-M, N-R, and R-X, for example. In anotheralternative, the search engine 125 may send a notice to the terminalthat the request 114 cannot be accommodated on the terminal 14 and mayprompt the user to add an additional constraint to the request 114, sothat a search result may be displayed at the terminal 14.

Adjusting the data field size also provides more convenient searchresults for the user. For example, if a user were to access anInternet-based database for books for sale, and were to request a listof all book titles beginning with the letter “F,” a common search enginemight return several hundred titles or more, displaying perhaps twentytitles (entries) at a time. The user would then have to look througheach of many pages to find a desired title. This process could be verytime-consuming and expensive. Furthermore, if the search results weretoo large, the common search engine might return a notice saying theresults were too large for display and might prompt the user to selectan alternative search request. However, performing the same search usingthe search engine 125 allows the truncator 152 to reduce the size of theinformation displayed to a manageable level. In this example, if therequest 114 includes the constraint “F,” the truncator 152 will loopthrough the data in a data field that includes book titles starting withthe letter “F” until a list is available that can fit within the displaylimits of the terminal 14, or that fits within a limit set by the user,for example. The first list returned to the terminal 14 as a result ofthis request 114 may be a two-letter combination with “F” as the firstletter and a second letter of a book title as the second letter. Forexample, the first list may include the entries “Fa,” “Fe,” “Fi,” “Fo,”and “Fu,” all of which represent titles of books. The user could thenselect one of the entries “Fa,” “Fe,” “Fi,” “Fo,” and “Fu” to perform afurther search, continuing the process until one or more desired titlesare displayed. An example of a similar truncation result is shown inFIG. 14.

When a parameter related to the search results is adequately truncated,the parameter is directed to the dispatcher 154, which retrieves thedata from database 12 using the database driver 170. The dispatcher 154then directs the final, truncated search results 175 back to theterminal 14 as a response to the request 114.

FIG. 7 is a block diagram showing the status control 140, which isresponsible for monitoring the status of a current search. Due to thenature of the search engine 125, the user can choose any combination ofconstraints, fields or keywords, including those from past and currentsearch cycles. The status control 140 may keep track of all past cyclesof the search, as well as all information necessary to return to any ofthose past search cycles. The status control 140 includes a status datamodule 142, and an index module 144. The status data module 142 containsdata related to each such search cycle, including the constraint(s)entered during the search cycle, any truncation steps taken, and theresults of such truncation, for example. The index module 144 providesaccess to these data. When the request 114 is being analyzed by therequest analyzer 130, the constraint collator 136 sends a request statusquery 116 to the index module 144. The status data module 142 containsinformation related to all past and current search cycles, which arereferenced by the index module 144, and delivers a status response 119for the most recent search cycle to the constraint collator 136. When anew constraint is sent to the query generator 150, the status datamodule 142 is updated 118 by the constraint collator 136. Specificstructures of the request 114, the request status query 116, the statusresponse 119 and the request status control 118 will be provided later.

The status data module 142 may be reset by the database qualifier 160with all available fields when a refresh function is used. In anembodiment, the refresh function may be used to clear all past searchcycles and the current search cycle from the status control 140. In suchan event, the search results, such as the search results shown in FIG.4, will no longer be displayed at the terminal 14, and data related tothe past and the current search cycles may not be used for future searchcycles. In effect, the refresh function may cause the entire search tobe discarded. The refresh function may be activated when a user selectsa refresh button (see FIG. 4) on a displayed result list, or on anotherportion of a GUI. Alternatively, the refresh function may discardselected search cycles. In this alternative embodiment, the user may,for example, move a cursor to a desired result list from a past searchcycle and activate a refresh, reset, back, or drop button. All dataassociated with search cycles subsequent to the selected search cycle,including all displayed result lists may then be discarded.

FIG. 8 is a block diagram showing the database qualifier 160. Thedatabase qualifier 160 provides data field information at the start of asearch or when the search engine 125 is refreshed. A field assessor 162access the database 12 using the database driver 170, and identifies andaccesses discrete data fields and other information in the database 12.A field converter 164 structures the data field information into ausable (searchable/sortable) structure and sends 163 the formatted datafield information to the status control 140. Techniques for identifyingand accessing the data fields, and for formatting the data fieldinformation are well known in the art. Such techniques are described,for example, in U.S. Pat. No. 5,222,066, Interface for AccessingMultiple Records Stored in Different File System Formats, the disclosureof which is hereby incorporated by reference.

FIG. 9 is a block diagram of the database driver 170. The databasedriver 170 is the universal interface with the database 12, which can bea local or a remote database.

FIG. 10 is an example of a search-on-the-fly using the search engine125. In FIG. 10, a database 200 includes information related to a numberof individuals. The information in the database 200 may be presented atthe terminal 14 using a series of screens or menus 201-230. The userfirst accesses the database 200 and is presented with a list 201 of theinformation or data fields contained in the database 200. The resultlist 201 is generated by the field assessor 162, and is provided fordisplay at the terminal 14 by the query generator 150. As shown in FIG.10, a user has selected the data field “City” for display ofinformation. However, the number of “cities” listed in the database 200is too large to conveniently display at one time (i.e., on one page) atthe terminal 14. Accordingly, the truncator 152 will loop a requirednumber of times until an adequate display is available. In FIG. 10, themenu 203 shows the results of the truncation with only the first letterof a city name displayed.

Using the menu 203, the user has selected cities beginning with theletter “A.”. The results are shown in menu 205. Now, the user elects toconduct another search-on-the-fly, by selecting the “sort-on-the-fly”option 206. The query generator 150 displays all the information fieldsavailable from the database 200, except for the information fieldalready displayed, namely “City.” The results are displayed in menu 207.The user then elects to further search on the data field “State.” Thequery generator 150 returns the requested information as displayed inmenu 209, listing five states by their common two-letter abbreviation.The user then chooses New York from the menu 209, and the querygenerator 150 returns a list of cities in New York, menu 211.

Next, the user elects to conduct another search-on-the-fly, option 212,and the query generator 150 returns only the remaining data fields fordisplay in menu 215. From the menu 215, the user selects “Address” forthe next data field to search, and the query generator 150 returns amenu 217 showing only first letters of the address. This signifies thatthe data field “Address” was too large to be easily displayed on theterminal 14. The user then elects to search on all addresses that beginwith “C.” The query generator 150 returns a list of addresses bydisplaying only street names, menu 219.

The user then elects to conduct a further search-on-the-fly, option 220,and the remaining two data fields, “Name” and “Phone” are displayed asoptions in menu 221. The user selects name, and the query generatorreturns a further breakdown of the data by last name and by first name,menu 223. This process continues, with further menus being used toselect a last name and a first name from the database 200. When thefinal selection is made, information from the database 200 related tothe individual is displayed in window 230.

In the example shown in FIG. 10, the user could have refreshed thesearch engine 125 at any time, and the search would have recommenced atthe beginning. Alternatively, the user could, by simply selecting aprior menu, such as the menu 215, have changed the course of the search.In this alternative, if the user had gone back to the menu 215 andinstead of selecting “Address” selected “Phone,” then the menus 217-229would be removed from display at the terminal 14, and the search wouldbegin over from the point of the menu 215.

FIGS. 11-15 b illustrate exemplary searches of a remote database, suchas the database 13 shown in FIG. 1. The database in the illustratedexample is for an Internet website 232 that sells books. The examplesillustrated are based on a Barnes & Noble™ website. In FIG. 11, the userhas applied the search engine 125 to the website 232 database, and thequery generator 150 has returned a list 233 of data fields from whichthe user may select to access data from the website 232 database. Thelist 233, and other lists described below, may be displayed as overlayson the website 232. In the example illustrated, the user selects “Title”for the first search cycle. Because the list of titles is too large toeasily display at the terminal 14, the truncator 152 loops until analphanumeric list 234 is created. The list 234 is then returned to theterminal 14. For the next search cycle, the user selects titles thatbegin with the letter “C.” Again, the data field contains too manyentries to conveniently display at the terminal 14, and the truncator152 loops as appropriate until list 235 is created. The processcontinues with subsequent lists 236 and 237 being returned to theterminal 14.

FIGS. 12-15 b illustrate alternate searches that may be completed usingthe website 232 database.

For the search results shown in FIGS. 11-15 b, the status control 140may iterate as follows:

Status Control Started . . . Key: Title1 Option: Title Level: 1 Filter:Field: Title Key: A2 Option: A Level: 2 Filter:SUBSTRING([Title],1,1)=‘A’ Field: Title Key: AA3 Option: AA Level: 3Filter: SUBSTRING([Title],1,2)=‘AA’ AND SUBSTRING([Title],1,1)=‘A’Field: Title Key: F4 Option: F Level: 4 Filter:SUBSTRING([Title],1,1)=‘F’ Field: Title Key: Fa5 Option: Fa Level: 5Filter: SUBSTRING([Title],1,2)=‘Fa’ AND SUBSTRING([Title],1,1)=‘F’Field: Title Key: Favo6 Option: Favo Level: 6 Filter:SUBSTRING([Title],1,4)=‘Favo’ AND SUBSTRING([Title],1,2)=‘Fa’ ANDSUBSTRING([Title],1,1)=‘F’ Field: Title Key: C7 Option: C Level: 7Filter: SUBSTRING([Title],1,1)=‘C’ Field: Title Key: Ce8 Option: CeLevel: 8 Filter: SUBSTRING([Title],1,2)=‘Ce’ ANDSUBSTRING([Title],1,1)=‘C’ Field: Title Key: Cells9 Option: Cells Level:9 Filter: SUBSTRING([Title],1,5)=‘Cells’ AND SUBSTRING([Title],1,2)=‘Ce’AND SUBSTRING([Title],1,1) ‘C’ Field: Title Key: Cellula10 Option:Cellula Level: 10 Filter: SUBSTRING([Title],1,7)=‘Cellula’ ANDSUBSTRING([Title],1,2)=‘Ce’ AND SUBSTRING([Title],1,1)=‘C’ Field: TitleKey: CC11 Option: CC Level: 11 Filter: SUBSTRING([Title],1,2)=‘CC’ ANDSUBSTRING([Title],1,1)=‘C’ Field: Title

Status Control Terminated.

FIG. 15b shows the results for a search for a low-fat cookbook using thesearch engine 125 as applied to a remote database. In this example, theremote database is coupled to a Barnes & Noble web page. The firstquery, and resulting message strings, are illustrated by the following:Query Analyzer Message Received: ACK Status Control: Refresh DispatcherMessage Sent:Categories.about.-.about.Title.about.-.about.Author.about.-.about.ISBN.about.SubTitle.about.Format.about.DatePublished.about.Stock Status.about.RecommendedAge.about.Pages.about.Ratings.about.Price.about.Retail.about.Savings.abou-t.-.about.PublisherQuery Analyzer Message Received: CLK#0#1#Categories Status Controlreceived an update: Key: Categories1 Option: Categories Level: 1 Filter:Field: Categories Query Generator Request is not cached, processingGenerated Query: SELECT DISTINCT [Categories] FROM Books ORDER BY[Categories] Number of Matching Records: 2032 Generated Query: SELECTDISTINCT SUBSTRING([Categories],1,82) FROM Books ORDER BYSUBSTRING([Categories],1,82) Number of Matching Records: 2022 GeneratedQuery: SELECT DISTINCT SUBSTRING([Categories],1,61) FROM Books ORDER BYSUBSTRING([Categories],1,61) Number of Matching Records: 1995 GeneratedQuery: SELECT DISTINCT SUBSTRING([Categories],1,45) FROM Books ORDER BYSUBSTRING([Categories],1,45) Number of Matching Records: 1751 GeneratedQuery: SELECT DISTINCT SUBSTRING([Categories],1,33) FROM Books ORDER BYSUBSTRING([Categories],1,33) Number of Matching Records: 1251 GeneratedQuery: SELECT DISTINCT SUBSTRING([Categories],1,24) FROM Books ORDER BYSUBSTRING([Categories],1,24) Number of Matching Records: 799 GeneratedQuery: SELECT DISTINCT SUBSTRING([Categories],1,18) FROM Books ORDER BYSUBSTRING([Categories],1,18) Number of Matching Records: 425 GeneratedQuery: SELECT DISTINCT SUBSTRING([Categories],1,13) FROM Books ORDER BYSUBSTRING([Categories],1,13) Number of Matching Records: 319 GeneratedQuery: SELECT DISTINCT SUBSTRING([Categories],1,9) FROM Books ORDER BYSUBSTRING([Categories],1,9) Number of Matching Records: 147 GeneratedQuery: SELECT DISTINCT SUBSTRING([Categories],1,8) FROM Books ORDER BYSUBSTRING([Categories],1,8) Number of Matching Records: 111 GeneratedQuery: SELECT DISTINCT SUBSTRING([Categories],1,7) FROM Books ORDER BYSUBSTRING([Categories],1,7) Number of Matching Records: 78 GeneratedQuery: SELECT DISTINCT SUBSTRING([Categories],1,6) FROM Books ORDER BYSUBSTRING([Categories],1,6) Number of Matching Records: 44 GeneratedQuery: SELECT DISTINCT SUBSTRING([Categories],1,5) FROM Books ORDER BYSUBSTRING([Categories],1,5) Number of Matching Records: 26 Truncatorfinished, took 15 seconds to make 13 iterations Caching this request . .. Dispatcher Message Sent: Afric.about.Art,.about.Bio.about.Busin.about.Compu.about.Cooki.about.Engin.about.Enter.ab-out.Ficti.about.Histo.about.Home.about.Horro.about.Kids!.about.Law:.about.Medic.about.Mind.about.Nonfi.about.Paren.about.Poetr.about.Refer.-about.Relig.about.Scien.about.Small.about.Sport.about.Trave.about.Write.ab-out.Query Analyzer Message Received: CLKCategories

In the example illustrated by FIG. 15b and the above-listed messagestrings, an initial request would have returned 2032 book titles forcook books. This number of entries may be too large. Accordingly, thetruncator 152, through 13 iterations, reduces the entries in a resultlist to 26. The entries in the truncated result list can then be easilyreviewed by the user, and further searches may be performed to identifya desired book. As can be seen in FIG. 15b , the user has selected“Categories” as a data field to search. As is also shown in FIG. 15b ,the search engine 125 may display other information windows, such asbook availability, ordering and shipping information windows. With asimple drag-and-drop cursor operation, for example, the user may thenorder and pay for the desired book.

FIG. 16-20 are flow charts illustrating operations of the search engine125. FIG. 16 is a flowchart of an overall search routine 250. Theprocess starts in block 251. The request analyzer 130 receives therequest 114, block 252. The request 114 may be made using a hierarchicalmenu-based display or a graphical user interface, with one or morelayers. Using either the menu or the GUI, the user may enter specificdetails by typing, selection of iconic symbols or pre-formatted text,and by using well-known data entry techniques, for example. The request114 may also comprise a simple text or voice query. Use of voicerecognition may be particularly useful in mobile environments, and tospeed access to the database 12. Use of voice recognition may includesimple commands, such as UP, DOWN, and SELECT, to select search termsfrom a pre-formatted list that is presented to the user at the terminal14. More sophisticated use of voice recognition may include actuallyspeaking letters or numbers, or full search terms, such as speaking akey word for a key word search, for example.

The protocol analyzer 133 provides an output 135 to the constraintcollator 136, and the constraint collator 136 determines the nature ofthe request, block 254. If the request 114 is a refresh request (i.e., acommand to initiate the refresh function), the constraint collator 136sends a reset command 131 to the database qualifier 160. The updatedrequest 115 (possibly with a new constraint) is then sent to the queryanalyzer 150 for further processing, including analyzing the database12, retrieving field descriptors, and formatting, block 256. The resultof the data field descriptor retrieval and formatting are shown as anavailable data fields result list, block 258, and is returned to theterminal 14, block 260.

In block 254, if the request 114 is not a refresh request, theconstraint collator 136 provides the updated request 115 (which may bean initial request, or a subsequent request) to the query generator 150,block 264. The constraint collator 136 compares the request 114 againstinformation stored in the status control 140. In particular, theconstraint collator 136 sends the request status control signal 118 tothe status control 140 and receives the request status response 119. Theconstraint collator 136 then compares the request status response 119 toconstraint information provided with the request 114 to determine if theconstraint status should be updated (e.g., because the request 114includes a new constraint). If the constraint status should be updated,the constraint collator 136 calls create new constraint subroutine 270,and creates new constraints.

The create new constraints subroutine 270 is shown as a flowchart inFIG. 17. The subroutine starts at 272. In block 274, the constraintcollator 136 determines if the request is for a sort-on-the-flyoperation. If sort-on-the-fly has been selected, field assessor 162prepares a new set of data fields, block 280. The new set of data fieldsare then sent to the query generator 150, block 284, and the subroutine270 ends, block 286.

In block 274, if sort-on-the-fly was not selected, the request analyzer130 may receive a key word constraint, block 276. The query generator150 will then generate an input window in which the user may enter adesired key word, block 282. Alternatively, the query generator 150 mayprompt the user to enter a key word using voice recognition techniques,or any other way of entering data. The process then moves to block 284.In block 276, if a key word search option was not selected, theconstraint collator 136 enters the new constraint to the existing listof constraints, block 278. The process then moves to block 284.

Returning to FIG. 16, the constraint collator 136 next updates thestatus control 140, block 290. In block 292, using the updatedconstraints, the query generator 150 generates a next query of thedatabase 12, block 292. The database driver 170 then extracts the resultlist from the database 12, according to the latest query, block 294. Inblock 296, the truncator 152 determines if the result list may bedisplayed at the terminal 14. If the result list cannot be displayed,the process moves to block 298, and a truncation routine is executed.The process then returns to block 294. If the result list in block 296is small enough, the result list is provided by the dispatcher 154 tothe terminal 14, block 258.

As noted above, the request analyzer 130 determines the nature of therequest, including any special commands. A special command may include acommand to conduct a search-on-the-fly. Alternatively, the search engine125 may adopt a search-on-the-fly mechanism as a default value. Thesearch engine 125 also may incorporate other special search commands,such as a Boolean search, for example.

FIGS. 18-20 are flowcharts illustrating alternate truncation subroutines298. In FIG. 18, the subroutine 298 adjusts a size of a data field bydecrementing a parameter TP related to entries in a selected data field.For example, if the data field comprises a list of U.S. cities by name,the parameter TP may be the number of alphabetical characters in a name.The results of such a truncation is shown in the example of FIG. 4. Thesubroutine 298 starts at block 301. In block 303, the parameter TP isset to equal a size of the data field being searched. The truncator 152then determines the list of records sized by the parameter TP, block305. In block 307, the truncator 152 determines if the result list canbe displayed at the terminal 14. If the result list cannot be displayedat the terminal 14, the truncator 152 decrements the parameter TP, block309. Processing then returns to block 305, and the truncator 152 gets areduced result list using the truncated parameter TP. If the result listcan be displayed at the terminal 14, the process moves to block 311 andthe subroutine 298 ends.

FIG. 19 is a flowchart illustrating an alternate truncation routine298′. The process starts in block 313. In block 315, the truncator 152sets the parameter TP to a size of the data field being searched. Inblock 317, the truncator 152 determines the list of records sized by theparameter TP. In block 319, the truncator 152 determines if the resultlist can be displayed at the terminal 14. If the result list cannot bedisplayed, the truncator 152 adjusts the size of the data field bydividing the parameter TP by a set amount, for example, by dividing theparameter TP by two, block 321. Processing then returns to block 317,and repeats. If the result list can be displayed at the terminal 14, theprocess moves to block 323 and the subroutine 298′ ends.

FIG. 20 shows yet another alternative truncation subroutine 298″. Theprocess starts in block 325. In block 327, the truncator 152 sets theparameter TP to equal the size of the data field being searched. Inblock 329, the truncator 152 determines the list of records sized by theparameter TP. The truncator 152 then determines if the result list canbe displayed at the terminal 14, block 331. If the result list cannot bedisplayed at the terminal 14, the truncator 152 determines if theparameter TP is less than ten, block 333. If the parameter TP is notless than ten, the truncator 152 adjusts the parameter TP by multiplyingthe parameter TP by a number less than one, block 337. In an embodiment,the number may be ¾. The process then returns to block 329 and repeats.In block 333, if the value of the parameter TP is less than ten, thetruncator 152 decrements the parameter TP by one, block 335. Processingthen returns to block 329 and repeats. In block 331, if the list can bedisplayed at the terminal 14, the process moves to block 339 and thesubroutine 298″ ends.

The examples illustrated in FIGS. 18-20 are but a few examples of thetruncation subroutines. One of ordinary skill in the art could conceiveof other methods to adjust the field size. In addition to using atruncation subroutine, the user may specify a limit for the field size.

As noted above, the search engine 125 may be used for multiple searchesand may be used to search multiple databases, including databases withdifferent schemas. The results of individual searches, including thecontrol data provided in the status control 140, are saved. The searchengine 125 may then be used to further sort (search), or otherwiseoperate on, the results of these multiple searches. In an embodiment,the search engine 125 may perform a Boolean AND operation on two searchresults. The result of the Boolean AND operation would be a list ofrecords, or entries, that are common to the two search results. FIG. 21illustrates such a Boolean AND operation.

In FIG. 21, a GUI 400 displays local database selections 410, includinga database of recordings (compact discs—CDs) 412 and a database ofcontacts 414. The databases 412 and 414 may be shown by textdescriptions and an appropriate icon, for example. The databaseselections in this example are resident on a user's terminal, such asthe terminal 14 shown in FIG. 1. Also displayed on the GUI 400 is aremote database selection 420 that represents databases, such as thedatabases 13 and 15 shown in FIG. 1, that are located remotely from theterminal 14. In the example shown in FIG. 21, the remote databaseselection 420 includes a database 422 for online record sales, which isrepresented by an icon (a CD) and a text title of the online retailer.The remote databases shown in the remote database selection 420 mayinclude those databases for which the user has already established alink. In the example shown, the user may already have entered anInternet address for the online retailer. In addition to any returnedweb pages from the online retailer, the terminal 14 may then display arepresentation of the database 422.

Continuing with the example, the user may use the search engine 125 toconduct a search-on-the-fly of the recordings database 412 and theVirgin Records™ database 422. The user may search both databases 412 and422 for titles of recordings that are classified as “blues.” The searchengine 125 may return search results 416 and 424 for searches of bothdatabases 412 and 422, respectively. The search results 416 and 424 maybe displayed in a window section 430 of the GUI 400. The results 416 and424 may also be represented by CD icons, such as the icons 432 and 434.The search results 416 and 424 may be stored as lists in one or moretemporary databases, as represented by the windows 417 and 427. Thesearch results 416 and 424 may also be stored in a scratch pad database418. At this point, the user may wish to determine which recordings fromthe list 424 are contained in the list 416. The search engine maysupport this function by performing a Boolean AND operation of the lists416 and 424. The results of the Boolean AND operation are represented bythe icon 436 displayed in the window 430. To execute the Boolean ANDoperation, the user may simply drag the icon 432 over the icon 434, andthen select AND from a pop-up menu 438 that appears when the icons 432and 434 intersect. Other techniques to execute the Boolean AND (oranother Boolean function) may include typing in a command in a window,using voice recognition techniques, and other methods. In addition,other Boolean functions may be used.

The result represented by the icon 436 of the Boolean AND operation maythen be stored in a database at the terminal 14, such as in the scratchpad database 418 or may be stored at another location. The result maythen be subjected to further search-on-the-fly operations.

Also shown in FIG. 21 is an online-purchase module 435 that may be usedto consummate purchase of a product referenced in an online databasesuch as the database 422. To initiate such a purchase, the user may dragan iconic or text representation of a desired product listed in thesearch result 424 over an icon 436 in the online-purchase module 435.This drag-and-drop overlaying these icons may initiate and complete theonline purchase for the desired product.

Use of the search engine 125 may be facilitated by one or more GUIs thatare displayed on the terminal 14. FIGS. 22-26 are examples of such GUIs.In FIG. 22, a GUI 450 includes a display section 452 and one or moredatabase sections such as local database section 470 and remote databasesection 460. The local database section 470 includes databases local tothe terminal 14. In the example shown, the local databases include apatients' database 472, a general contacts database 474, a pharmacydatabase 476, a medicines database 478 and a scratch pad database 480.The remote databases include an Amazon.com database 462, an onlinerecord retailer database 464, a Physician's Desk Reference database 466and an American Medical Association (AMA) online database 468. Theremote and local databases may be represented by a text title and anicon, both contained in a small window as shown. A user may access oneof the remote or local databases by moving a cursor over the desiredwindow and then selecting the database. In the example shown, the localmedicines database 478 has been selected, and a list 490 of data fieldsin the medicines database 478 is displayed in the display section 452.Also included on the display section 452 is a keyword button 492 thatmay be used to initiate a key word search of the medicines database 478.

FIG. 23 shows the GUI 450 with a user selection of a category data fieldfrom the list 490. The category data field is indicated as selected byan arrow adjacent to the data field name. When the category data fieldis selected, a category list 494 is displayed on display section 452.The category list 494 includes four entries, as shown.

The user may continue to search the medicines database 478 using keyword techniques and search-on-the-fly techniques. FIG. 24 shows the GUI450 with results of several search cycles displayed.

FIG. 25 illustrates a search of the PDR database 466. Such a search maybe initiated by dragging a cursor to the window having the PDR 466symbol (text or icon), and then operating a “select” button. FIG. 26shows a search of the Amazon database 462. This search may also beinitiated by a “drag-and-drop” operation.

The SOF search engine 125 may accommodate merging of one or more sets ofsearch results. The multiple search results may be derived from a commondatabase, or from more than one database. A search using the searchengine 125 may be controlled through a user interface by one or moreicons that can represent (1) filters or (2) the images of filters. Thus,the icon may represent spatial or temporal attributes, or sets ofobjects or procedures. Merging the icons thus has two interpretationscorresponding to (1) and (2): either filters are added (“apply everyfilter in every icon to every image to which it can be applied”), orimage sets are added. In an alternative embodiment, the addition (unionor join) operator may be any other relational operator, e.g. divide,difference.

In various aspects, the SOF search engine 125 provides many unique andpowerful database operations. These operations in data manipulation thatinvolves chirality; faceted search and facet manipulation; includingfacet rotation, dynamic data functions, including database contentexposition involving, for example, dynamic pull down menus, datarotation; taxonomy control, variation, and biasing; database anddatabase cleansing; data visualization; data parsing, re-amalgamation,retagging, and database repopulation; and diverse data miningoperations. The SOF search engine 125 provides an intuitivecomputer-human interface that matches the unique parallel processing ofthe human brain and the rapid serial processing of a digital computer.These aspects of the SOF search engine 125 make possible many additionalfeatures and information display and data manipulation products andservices, including data representation and manipulation through iconcombinational variance, not available with current database managementsystems and concepts. These aspects of the SOF search engine 125 aredisclosed above, and are shown in FIGS. 22A-31 and are explained in moredetail below.

Chirality

The SOF SE 125 allows for chiral manipulation of data objects. A humanleft hand has a chiral representation to a human right hand. Whenclosed, the left hand is a non-superposable mirror image of the righthand; no matter how the two hands are oriented, it is impossible for allthe major features of both hands to coincide. Chiral manipulation ofdata objects using SOF SE technology may be understood with reference toFIGS. 22A-22C.

As noted above, GUI 450, shown for example in FIG. 22B, includes adisplay section 452 and one or more database sections such as localdatabase section 470 and remote database section 460. The local databasesection 470 includes databases local to the terminal 14. In the exampleshown, the local databases include a patients' database 472, a generalcontacts database 474, a pharmacy database 476, a medicines database 478and a scratch pad database 480. The remote databases include anAmazon.com database 462, an online record retailer database 464, aPhysician's Desk Reference database 466 and an American MedicalAssociation (AMA) online database 468. The remote and local databasesmay be represented by a text title and an icon, both contained in asmall window as shown. A user may access one of the remote or localdatabases by moving a cursor over the desired window and then selectingthe database. In the example shown, the local medicines database 478 hasbeen selected, and a list 490 of data fields in the medicines database478 is displayed in the display section 452. Also included on thedisplay section 452 is a keyword button 492 that may be used to initiatea key word search of the medicines database 478. Thus, the illustrateddatabases are represented in GUI 450 by a number of different icons.

The icons of GUI 450 are data objects. Manipulation of the iconsillustrates the chiral nature of their data representation. For example,the patients' database 472 is represented by an address card file icon472A. Pharmacy data base 476 is represented by a pharmacy icon 476A.Medical database 478 is represented by medical icon 478A. Dragging thepatients' database icon 472A over the pharmacy icon 476A (path A, FIG.22B) instructs the SOF SE 125 to execute a first operation. Dragging thepharmacy icon 476A over the patients' database icon 472A (i.e., path B,FIG. 22C) instructs the SOF SE to execute a second operation. In thisexample, the first operation (FIG. 22B) may be to produce a databaselisting 476B of all medicines currently prescribed (i.e., prescriptions)to each of the patients in the database 472. The database listing 476Bmay include full or partial patient information as provided in thepatients' database 472. The database listing 476B further may include afull or partial listing of the prescriptions as contained in thepharmacy database 476. The full or partial listing from the pharmacydatabase 476 may include information such as prescription date,expiration, refills, generics, and pharmacy information includingpharmacy contact information and pharmacist name. The SOF SE 125 furthermay select icon 476C to represents the database listing 476B. Thedatabase listing 476B and icon 476C may be stored in a local datarepository such as the virtual scratch pad database 480, and may bedisplayed on the GUI 450 as separate database 476B. The icon 476C andits underlying database 476B may be used in subsequent search-on-the-flyoperations, such as sending a new prescription for a particular patientto a pharmacy (after appropriate medical examination and review by theprescribing physician).

Referring to FIG. 22C, icon merge and database manipulation process ofpath B involves dragging the pharmacy database icon 476A patients'database icon 472A may send a prescription to a patient's preferred ordesignated pharmacy. A physician, during the course of a day's medicalexaminations, for example, may require several prescriptions, which thephysician may enter into the pharmacy database 476. By dragging thepharmacy database icon 476A over the patients database icon 472A, thephysician may send an appropriate prescription, in the form of adigitally-signed electronic document resembling a hard copy prescriptionwrit. This dragging operation of path B also may send a prescriptiondrop-off notification to the patient using email, text, or voicemessaging. The icon merge operation may produce database listing 472B,which may take the form of prescription information for the patient. Thedatabase listing 472B may be accompanied by icon 472C, which may be inthe form of a prescription writ. The database listing 472B and icon 472Cmay be stored in the virtual scratch pad database 480, for example.

As may be appreciated by reference to FIGS. 22A-22C, an icon mergeoperation along path A produces different results from those of an iconmerge along path B, illustrating the chiral nature of icon mergeoperations executable using search-on-the-fly technology. This chiralitymay be a default condition established with the construction of theunderlying databases. In an alternative, a user may establish chiralmerge operations through use of an appropriate GUI.

Faceted Search

Search-on-the-fly technology, as disclosed herein, permits arich-exposition of data from any database or merge of multipledatabases. In viewing a database, the database fields generally areshown as a flat, two-dimensional structure; namely a page or sheet ofpaper. However, using a SOF search engine 125, this ordinaryrepresentation of data may be enhanced significantly to show all therich variation of data possible in a faceted search. Rather than the“sheet of paper” view of data, the SOF search engine 125 may be used topresent the data in one of a number of facets of a solid object.Consider a database that has six dimensions. Referring to FIG. 24,medicines database 478 may be seen to have six dimensions, namelyCategory, Brand Name, Generic Name, Dosage, Price, and Specifications.That is, using the SOF search engine 125, an iterative search of thedatabase 478 may be conducted starting with any of these six dimensions.FIG. 24 shows just such a search. As a first dimension, Category, isselected, sub-categories are revealed, namely Antibiotics,Antidepressants, Narcotics, and Other. The iterative search results 494,500, 506, and 510 show the effect of applying the SOF search engine 125to the medicines database 478.

However, even more information is available using the power of the SOFsearch engine 125. Consider now how the original six dimensions wouldappear if expressed in a solid, or body of revolution. For sixdimensions, such a solid, with equal sized facets, would be a cube. TheSOF search engine 125 may render the database 478 on the GUI 450 as acube, with each dimension occupying a facet of the cube. FIG. 27 showssuch a rendering. The SOF search engine enables rotation of the cube toallow a user to view the contents of each facet or dimension of the cube600.

Note that any facet of the cube may display further search results whena search on any one dimension is conducted. Note also that if thecontents of any database would exceed the display capacity of a facet,the results may be truncated. Thus, and considering the search resultsshown in FIG. 11, for example, the selection of Title for the nextiteration of an iterative search returns too may results to be entirelyshown, as can be seen in results field 234. Thus, the SOF search engine125 may return a truncated list of titles, and further iterativesearches may result in truncation until the results may be displayed ina facet without truncation.

As an alternative, the SOF search engine 125, when displaying searchresults in the graphical form of a faceted solid, may resize the solidwhen the results of a search iteration produce a smaller number ofentries in a facet than existed before the search. That is, the cube mayshrink. Correspondingly, the cube may expand when the number increases.

As another alternative, each iteration of the search may produce aunique cube, smaller or larger in size than its predecessor. Thus, asearch with three iterations may produce three cubes, each of which maybe displayed in the GUI, and each of which may differ in size from theothers. See FIG. 28.

The SOF search engine 125, and associated search technology, then, maybe used to create any shape with any number of facets. The solid (image)produced by this process takes on an appearance similar to that of asoccer ball, with facets for panels of the ball, when the number ofdatabase dimensions increases. Each such facet, or panel of the solid isan entry point into the overall database or data structure representedby the solid. The solid may be manipulated by “reaching in” to aspecific facet and “viewing by” the data as shown, for example, in aflat view, by FIG. 24.

As is shown in FIG. 29, the GUI 450 includes a control feature thatallows manipulation of the cube(s). For example, a user may hover acursor (not shown) over a cube to select that cube, and then byoperation of slide bar 690, may rotate the cube so that the selectedfacet is displayed in a plane of the GUI. Thus, as shown, facet 601 ofcube 600 is in the plane of the GUI 450.

Another powerful aspect of the SOF search engine 125 is the ability tomerge databases, data sets, data dimensions, and data in an intuitivefashion that convey the rich power of search-on-the-fly technology.Consider databases 476 and 478, shown in FIG. 28. Database 476 has sixdimensions, and as before, may be represented by a cube 600. Database478, however, has five dimensions and may be represented as a pyramid.However, database 478 has two data dimensions that do not exist in thedatabase 476, namely health warning issued by the drugs' manufacturers,and shelf life. A user may be interested in of merging the two databases478 and 476. FIG. 27 shows the result of the merge, namely aneight-sided solid 640. In addition, for overlapping entries in aspecific data dimension, the overlap may be indicted by one color, suchas blue, and the non-overlapping entries by two other colors, such asgreen and red, to indicate the origin of the entries. As before, the GUI450 may incorporate control features that allow “rotation” of thedisplayed solids.

In addition to the above-disclosed features, a solid such as theeight-sided solid of FIG. 27 may be “unfolded” to produce a moretraditional view of the data—for example, FIG. 24. In unfolding thesolid, the order of steps in any iteration, if represented in the solid,may be reflected in the unfolded view.

In addition to the above-described control features, the GUI 450 mayincorporate touch screen displays, and the solid may be rotated along aninfinite number of axes, much like spinning a globe or rolling a ball.

Dynamic Pull Down Menu

The SOF search engine 125, as disclosed previously, produces dynamicsearch results. Referring again to FIG. 24, a search of medicines bycategory produces a list of three drugs, plus “Other.” This list isdynamic, and constitutes a dynamic pull-down menu for further searchingand selection. The list is dynamic in that the SOF search engine 125 mayreturn results only if the underlying database contains an enumerateditem. Thus, for example, if the database 478 does not contain anyantibiotics, the result list 494 would not have the entry “Antibiotics.”This effect has significant consequences. The absence of an entry meansthe database has no instances of the data item. Thus, a user may, bysimple inspection, determine the entire breadth of coverage of adatabase by noting what is shown in a search result field and what isnot shown.

Note that this feature applies to all databases accessible by the SOFsearch engine 125. In FIG. 24, the illustrated SOF search is of themedicines database 478. However, the SOF search engine 125 may becontrolled to search any or all of the external database shown insection 460, as well as those shown in section 470. The SOF searchengine 125, in returning search results may include data entries fromall appropriate databases resident on, or linked to terminal 14. Forexample, the SOF search engine 125, when searching all databases for theterm antibiotics, may search the databases 476, 478, and 466, 468.

Parse/Amalgamate/Re-Label/Repopulate

The SOF search engine 125 permits powerful data parsing and re-labeling,and database repopulation. Consider the data search results shown inFIG. 30. Under results, Attorney (705), a number of individual attorneynames and firm names are listed (since the truncated term “Dor” wasselected in the prior iteration). The Attorney results list 705 for“Dor,” in effect, could be a database, database dimension, or field.However, only names beginning with Dor are shown. As a result, the name“HereII,” which appears as the second name in the second entry may notbe separately searchable. However, the entries in the Attorney field 705may be parsed to separate out any definable data element. For example,the firm names may be parsed according to each proper name, first andsecond names appearing in the firm name, the “&” symbol, the word “and,”and if listed, the corporation type (e.g., PLLC, PLC, etc.) Thethus-parsed data elements could then be amalgamated. Suppose a user wereinterested in the corporate designation. The data may be parsed to breakout this term, where existing. The corporate designation then may beformed as a separate data dimension and may be labeled as “law firmcorporation type.” Then the database may be repopulated with this dataelement. Subsequent searches of the database may include asearch-on-the-fly search for lay firm corporation type.

Data Cleansing

A powerful feature of search-on-the-fly searching is the ability of theSOF search engine 125 to explicitly and clearly show errors andinconsistencies in any database. Consider the search results shown inFIG. 31 for the USPTO database with assignee name as a search term.Iterative searching leads to results of “M” and then “Minnesota Miningand Manufacturing Company.” The returned search results clearly show theinconsistent nature of entries for this assignee. Of course,inconsistent entries may not result in actual errors. However, if theassignee name were spelled with one “n” in Minnesota, the entry would beoutside the range of actual, correct assignee names for 3M. But thegraphical nature of SOF search engine search results would place theerroneous result within the same window as the correct results, andthus, the erroneous result may be noticed by a user reviewing the searchresults. Thus, the error may be detected.

Once detected, the user need only select the erroneous entry and acorrect entry, and with a single ‘cleanse” command, correct theerror—the SOF search engine 125 performs a merge of the two data entriesand replaces the erroneous entry with a correct entry.

Virtual Scratch Pad

A virtual scratch pad allows a user to maintain data in a convenient,easy to access, review, and manipulate area of the terminal 14. Virtualscratch pad database 480 is illustrated, for example, in FIG. 22A. Thevirtual scratch pad database may be an amalgamation of databases,database search results, and similar data. The virtual scratch pad database 480 may contain data for a limited time, or until deleted by auser. The virtual scratch pad database 480 may include data searchabletogether by the SOF search engine 125. For example, the virtual scratchpad database 480 may include search results for several differentsearches of the PDR database 466. Searching the virtual scratch paddatabase 480 may mean searching on the fly, the search results as if theresults were amalgamated into a single list.

While using search on the fly has been described in detail for an endresult of printing, viewing or displaying data, search on the fly can beuseful for other purposes. Search on the fly does not require obtainingthe underlying data in the database or the display of the underlyingdata to be useful. Search on the fly can be used for gatheringinformation or characteristics about data in a database with or withoutdownloading the data itself. This gathered information about the datacan be used to analyze the data, sorting, correct or clean data,verifications and confirmations. For example, search on the fly can beused to determine whether there is existing data in a database withincertain ranges or parameters (date ranges, numerical, alphanumerical andother characteristics). If there is data within certain parameters, thenumber of datapoints within those parameters can also be determined.This information about the data can be gathered using search on the flywith queries to the database manager (which may simply need to query itsindex and not access the data itself). Another example is correctingdata. Data may need to be corrected or cleaned for various reasonsincluding spelling errors. Search on the fly can locate these errorswithout necessarily accessing and downloading the data itself. Certaincombinations of characters or truncations will be obvious spellingerrors. Also, data that is out of range can be located and corrected oreliminated from the database using search on the fly. Another example isdata from one database can be confirmed or verified against data in asecond database using search on the fly. Those skilled in the art willfind many uses and specific applications for search on the fly.

Certain of the devices shown in the herein described figures include acomputing system. The computing system includes a processor (CPU) and asystem bus that couples various system components including a systemmemory such as read only memory (ROM) and random access memory (RAM), tothe processor. Other system memory may be available for use as well. Thecomputing system may include more than one processor or a group orcluster of computing system networked together to provide greaterprocessing capability.

The system bus may be any of several types of bus structures including amemory bus or memory controller, a peripheral bus, and a local bus usingany of a variety of bus architectures. A basic input/output (BIOS)stored in the ROM or the like, may provide basic routines that help totransfer information between elements within the computing system, suchas during start-up. The computing system further includes data stores,which maintain a database according to known database managementsystems. The data stores may be embodied in many forms, such as a harddisk drive, a magnetic disk drive, an optical disk drive, tape drive, oranother type of computer readable media which can store data that areaccessible by the processor, such as magnetic cassettes, flash memorycards, digital versatile disks, cartridges, random access memories (RAM)and, read only memory (ROM). The data stores may be connected to thesystem bus by a drive interface. The data stores provide nonvolatilestorage of computer readable instructions, data structures, programmodules and other data for the computing system.

To enable human (and in some instances, machine) user interaction, thecomputing system may include an input device, such as a microphone forspeech and audio, a touch sensitive screen for gesture or graphicalinput, keyboard, mouse, motion input, and so forth. An output device caninclude one or more of a number of output mechanisms. In some instances,multimodal systems enable a user to provide multiple types of input tocommunicate with the computing system. A communications interfacegenerally enables the computing device system to communicate with one ormore other computing devices using various communication and networkprotocols.

The preceding disclosure refers to flowcharts and accompanyingdescriptions to illustrate the embodiments represented in the Figures.The disclosed devices, components, and systems contemplate using orimplementing any suitable technique for performing the stepsillustrated. Thus, in the Figures, the described or similar steps may beperformed at any appropriate time, including concurrently, individually,or in combination. In addition, many of the steps in the flow charts maytake place simultaneously and/or in different orders than as shown anddescribed. Moreover, the disclosed systems may use processes and methodswith additional, fewer, and/or different steps.

Embodiments disclosed herein can be implemented in digital electroniccircuitry, or in computer software, firmware, or hardware, including theherein disclosed structures and their equivalents. Some embodiments canbe implemented as one or more computer programs, i.e., one or moremodules of computer program instructions, encoded on computer storagemedium for execution by one or more processors. A computer storagemedium can be, or can be included in, a computer-readable storagedevice, a computer-readable storage substrate, or a random or serialaccess memory. The computer storage medium can also be, or can beincluded in, one or more separate physical components or media such asmultiple CDs, disks, or other storage devices. The computer readablestorage medium does not include a transitory signal.

The herein disclosed methods can be implemented as operations performedby a processor on data stored on one or more computer-readable storagedevices or received from other sources.

A computer program (also known as a program, module, engine, software,software application, script, or code) can be written in any form ofprogramming language, including compiled or interpreted languages,declarative or procedural languages, and it can be deployed in any form,including as a stand-alone program or as a module, component,subroutine, object, or other unit suitable for use in a computingenvironment. A computer program may, but need not, correspond to a filein a file system. A program can be stored in a portion of a file thatholds other programs or data (e.g., one or more scripts stored in amarkup language document), in a single file dedicated to the program inquestion, or in multiple coordinated files (e.g., files that store oneor more modules, sub-programs, or portions of code). A computer programcan be deployed to be executed on one computer or on multiple computersthat are located at one site or distributed across multiple sites andinterconnected by a communication network.

The terms and descriptions used herein are set forth by way ofillustration only and are not meant as limitations. Those skilled in theart will recognize that many variations are possible within the spiritand scope of the invention as defined in the following claims, and thereequivalents, in which all terms are to be understood in their broadestpossible sense unless otherwise indicated.

I claim:
 1. A method for searching for data among a plurality ofdisparate databases, comprising: displaying an indication of contents ofeach of the plurality of disparate databases, comprising displaying adata field descriptor for one or more database fields of each of theplurality of disparate databases; receiving a search selection directedto one or more of the one or more database fields; returning a firstsearch result comprising database entries matching the search selection;saving the first search result as a first temporary database; receivinga second search request directed to the first temporary database;returning a second search result comprising entries in the temporarydatabase matching the further search request; and saving the secondsearch result as a second temporary database.
 2. The method of claim 1,wherein the search result comprises database entries from at least twodisparate databases, the method comprising: creating a merged searchresult by merging first search results from a first disparate databasewith subsequent search results from one or more additional disparatedatabases; and displaying the merged search result as a third temporarydatabase.
 3. The method of claim 1, wherein the first and second searchresults comprise iconic representations of the database entries.
 4. Themethod of claim 1, further comprising displaying each of the pluralityof disparate databases and the temporary databases on the user interfaceas a solid of revolution.
 5. The method of claim 4, comprisingdisplaying the database fields on the user interface as facets of solidsof revolution.
 6. The method of claim 5, comprising: executing a BooleanOR search operation by dragging a first solid of revolution over asecond solid of revolution; and executing a Boolean AND search operationby dragging the second solid of revolution over the first solid ofrevolution.
 7. The method of claim 6, wherein the first and secondsolids of revolution include at least one facet having a common datafield descriptor; wherein the first solid of revolution includes Nfacets and the second solid of revolution includes M facets; and whereinthe Boolean OR operation produces a third solid of revolution having((N+M)−1) facets, the method comprising: combining the data fieldentries of the facets having the common data field descriptor, anddisplaying the third solid of revolution on the user interface.
 8. Themethod of claim 7, comprising displaying the third solid of revolutionwith facets from the first solid of revolution in a first color, facetsfrom the second solid of revolution in a second color, and combinedfacets in a third color.
 9. The method of claim 6, wherein the first andsecond solids of revolution include P facets having a common data fielddescriptor; wherein the first solid of revolution includes N facets andthe second solid of revolution includes M facets; wherein P<N and P<M;and wherein the Boolean AND operation produces a third database listhaving P data fields, the method comprising: selecting the P facetshaving the common data field descriptor, and displaying the thirddatabase list on the user interface.
 10. The method of claim 9, whereinP is greater than or equal to four, the method comprising displaying thethird database list as a third solid of revolution.
 11. The method ofclaim 6, further comprising: through the user interface, receivingrotation commands from a user; rotating one or more of the solids ofrevolution; and displaying rotated ones of the solids of revolutions onthe user interface.
 12. The method of claim 4, comprising displaying thedata fields as lists in flat displays on the user interface.
 13. Themethod of claim 12, comprising unfolding the solids of revolution togenerate the flat displays.
 14. The method of claim 4, wherein eachsolid of revolution has four or more facets.
 15. The method of claim 4,comprising: displaying the first search result as a first solid ofrevolution having N facets; and displaying the second search result as asecond solid of revolution having N facets, wherein the second solid ofrevolution is smaller than the first solid of revolution.
 16. The methodof claim 4, comprising: displaying the first search result as a firstsolid of revolution having N facets; and displaying the second searchresult as a second solid of revolution having N facets, wherein thesecond solid of revolution is larger than the first solid of revolution.17. The method of claim 1, wherein the first search result comprises adynamic pull down list, and wherein the first search result includesonly those data fields for which at least one of the disparate databasescontains the search selection.
 18. A non-transitory computer-readablestorage medium containing search-on-the-fly search and data manipulationinstructions searching for data among a plurality of disparatedatabases, the instructions when executed by a processor, causing theprocessor to: display an indication of contents of each of the pluralityof disparate databases, wherein the processor causes display of a datafield descriptor for one or more database fields of each of theplurality of disparate databases; receive a search selection directed toone or more of the one or more database fields; return a first searchresult comprising database entries matching the search selection; savethe first search result as a first temporary database; receive a secondsearch request directed to the first temporary database; return a secondsearch result comprising entries in the temporary database matching thefurther search request; and save the second search result as a secondtemporary database.
 19. The computer-readable storage medium of claim 1,wherein the search result comprises database entries from at least twodisparate databases, and wherein the processor: creates a merged searchresult by merging first search results from a first disparate databasewith subsequent search results from one or more additional disparatedatabases; and displays the merged search result as a third temporarydatabase.